home *** CD-ROM | disk | FTP | other *** search
/ Best of Shareware / Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso / mac / DOS / TELECOMM / PCCP047 / MASTERM.C < prev    next >
Text File  |  1992-06-29  |  5KB  |  178 lines

  1. #include<stdio.h>
  2. #include<process.h>
  3. #include"port.h"
  4.  
  5. main(argc, argv)
  6.     int argc;
  7.     char **argv;
  8.     {
  9.     int run, basereg;
  10.     char stopbstr[2], fpname[256], cmdstr[256], c, oldstat;
  11.     if(!strcmp(getenv("REMOTE"), "YES"))
  12.         {
  13.         printf("You appear to be logged in remotely, judging by the environment\n");
  14.         printf("variable REMOTE, so this is probably a very bad idea.\n");
  15.         printf("Are you sure you want to run MASTERM? (y or n) --> ");
  16.         if(getchar()!='y') /* Note getchar() and not getch()! */
  17.             {
  18.             printf("n\nI didn't think so!\n");
  19.             exit(99);
  20.             }
  21.         else
  22.             printf("y\nOK, you're the boss!\n");
  23.         }
  24.     if((argc!=4)&&(argc!=5))
  25.         {
  26.         printf("USAGE: masterm <port#> <speed> <databits><parity><stopbits> [<emu file>]\n");
  27.         exit(1);
  28.         }
  29.     switch(argv[1][0])
  30.         {
  31.         case '1':
  32.             basereg=0x3f8;
  33.             break;
  34.         case '2':
  35.             basereg=0x2f8;
  36.             break;
  37.         case '3':
  38.         case '5':
  39.         case '7':
  40.             basereg=0x3e8;
  41.             break;
  42.         case '4':
  43.         case '6':
  44.         case '8':
  45.             basereg=0x2e8;
  46.             break;
  47.         default:
  48.             printf("Bad port number.\n");
  49.             exit(2);
  50.         }
  51.     oldstat=inp(basereg+MCTLREG);
  52.     outp(basereg+MCTLREG, 0x03);
  53.     spawnlp(P_WAIT, "term", "term", argv[1], argv[2], argv[3], argv[4], NULL);
  54.     stopbstr[0]=argv[3][2];
  55.     stopbstr[1]='\0';
  56.     run=1;
  57.     while(run)
  58.         {
  59.         printf("\n     Copyright (C) 1992 Peter Edward Cann, all rights reserved.\n\n");
  60.         printf("     UPLOAD:  (1) Xmodem   (2) Xmodem CRC   (3) Xmodem CRC 1K   (a) ASCII\n\n");
  61.         printf("     DOWNLOAD:  (4) Xmodem   (5) Xmodem CRC 1K Optional\n\n");
  62.         printf("      (t, SPACE or ENTER) Terminal   (d) Terminal with Dribble\n\n");
  63.         printf("                             (q) Quit\n\n             ---> ");
  64.         c=getch();
  65.         printf("%c\n", c);
  66.         switch(c)
  67.             {
  68.             case 'q':
  69.             case 'Q':
  70.                 run=0;
  71.                 break;
  72.             case 't':
  73.             case 'T':
  74.             case ' ':
  75.             case '\r':
  76.                 if(getenv("PCCPPATH")==NULL)
  77.                     sprintf(cmdstr, "term");
  78.                 else
  79.                     sprintf(cmdstr, "%s/term", getenv("PCCPPATH"));
  80.                 if(argc==5)
  81.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], argv[4], NULL);
  82.                 else
  83.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], NULL);
  84.                 break;
  85.             case 'd':
  86.             case 'D':
  87.                 if(getenv("PCCPPATH")==NULL)
  88.                     sprintf(cmdstr, "term");
  89.                 else
  90.                     sprintf(cmdstr, "%s/term", getenv("PCCPPATH"));
  91.                 printf("Dribble file pathname? (Blank to cancel)\n --> ");
  92.                 gets(fpname);
  93.                 if(!strlen(fpname))
  94.                     break;
  95.                 if(argc==5)
  96.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], argv[4], fpname, NULL);
  97.                 else
  98.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], "-", fpname, NULL);
  99.                 break;
  100.             case '1':
  101.                 if(getenv("PCCPPATH")==NULL)
  102.                     sprintf(cmdstr, "xmodems");
  103.                 else
  104.                     sprintf(cmdstr, "%s/xmodems", getenv("PCCPPATH"));
  105.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  106.                 gets(fpname);
  107.                 if(!strlen(fpname))
  108.                     break;
  109.                 spawnlp(P_WAIT, cmdstr, "xmodems", argv[1], argv[2], stopbstr, fpname, NULL);
  110.                 putch('\007');
  111.                 break;
  112.             case 'a':
  113.             case 'A':
  114.                 if(getenv("PCCPPATH")==NULL)
  115.                     sprintf(cmdstr, "asciis");
  116.                 else
  117.                     sprintf(cmdstr, "%s/asciis", getenv("PCCPPATH"));
  118.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  119.                 gets(fpname);
  120.                 if(!strlen(fpname))
  121.                     break;
  122.                 spawnlp(P_WAIT, cmdstr, "asciis", argv[1], argv[2], argv[3], fpname, NULL);
  123.                 putch('\007');
  124.                 break;
  125.             case '2':
  126.                 if(getenv("PCCPPATH")==NULL)
  127.                     sprintf(cmdstr, "xmcrcs");
  128.                 else
  129.                     sprintf(cmdstr, "%s/xmcrcs", getenv("PCCPPATH"));
  130.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  131.                 gets(fpname);
  132.                 if(!strlen(fpname))
  133.                     break;
  134.                 spawnlp(P_WAIT, cmdstr, "xmcrcs", argv[1], argv[2], stopbstr, fpname, NULL);
  135.                 putch('\007');
  136.                 break;
  137.             case '3':
  138.                 if(getenv("PCCPPATH")==NULL)
  139.                     sprintf(cmdstr, "xmcrc1ks");
  140.                 else
  141.                     sprintf(cmdstr, "%s/xmcrc1ks", getenv("PCCPPATH"));
  142.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  143.                 gets(fpname);
  144.                 if(!strlen(fpname))
  145.                     break;
  146.                 spawnlp(P_WAIT, cmdstr, "xmcrc1ks", argv[1], argv[2], stopbstr, fpname, NULL);
  147.                 putch('\007');
  148.                 break;
  149.             case '4':
  150.                 if(getenv("PCCPPATH")==NULL)
  151.                     sprintf(cmdstr, "xmodemr");
  152.                 else
  153.                     sprintf(cmdstr, "%s/xmodemr", getenv("PCCPPATH"));
  154.                 printf("Target file pathname? (Blank to cancel)\n --> ");
  155.                 gets(fpname);
  156.                 if(!strlen(fpname))
  157.                     break;
  158.                 spawnlp(P_WAIT, cmdstr, "xmodemr", argv[1], argv[2], stopbstr, fpname, NULL);
  159.                 putch('\007');
  160.                 break;
  161.             case '5':
  162.                 if(getenv("PCCPPATH")==NULL)
  163.                     sprintf(cmdstr, "xmcrc1kr");
  164.                 else
  165.                     sprintf(cmdstr, "%s/xmcrc1kr", getenv("PCCPPATH"));
  166.                 printf("Target file pathname? (Blank to cancel)\n --> ");
  167.                 gets(fpname);
  168.                 if(!strlen(fpname))
  169.                     break;
  170.                 spawnlp(P_WAIT, cmdstr, "xmcrc1kr", argv[1], argv[2], stopbstr, fpname, NULL);
  171.                 putch('\007');
  172.                 break;
  173.             }
  174.         }
  175.     outp(basereg+MCTLREG, oldstat);
  176.     exit(0);
  177.     }
  178.